package cn.wolfcode.wolf2w.service;

import cn.wolfcode.wolf2w.domain.Strategy;
import cn.wolfcode.wolf2w.domain.Travel;
import cn.wolfcode.wolf2w.query.StrategyQuery;
import cn.wolfcode.wolf2w.redis.vo.StrategyStatisVO;
import cn.wolfcode.wolf2w.util.JsonResult;

import java.util.List;

public interface IStrategyService {

    /**
     * 保存操作
     * @param strategy
     */
    void save(Strategy strategy);

    /**
     * 删除操作
     * @param id
     */
    void delete(String id);

    /**
     * 修改操作
     * @param strategy
     */
    void update(Strategy strategy);

    /**
     * 根据id查询用户对象
     * @param id
     * @return
     */
    Strategy findByOne(String id);

    /**
     * 查询数据库所有用户信息
     * @return
     */
    List<Strategy> findAll();

    /**
     * 高查
     *
     * @param qo
     * @return
     */
    Object query(StrategyQuery qo);

    /**
     * 保存或修改操作
     * @param strategy
     */
    void saveOrUpdate(Strategy strategy);

    /**
     * 热门设置
     * @param id 修改的区域
     * @param hot 修改的值
     * @return
     */
    JsonResult changeHotValue(String id, String hot);

    /**
     * 根据外键id查询Strategy对象集合(攻略明细)
     * @param catalogId
     * @return
     */
    List<Strategy> findByCatalogId(String catalogId);

    /**
     * 根据攻略分类外键查询点击量前三数据
     * @param destId
     * @return
     */
    List<Strategy> queryStrategyViewnumTop3ByDestId(String destId);

    /**
     * 根据vo对象数据
     * 更新攻略统计数据(点赞,评论数,点赞数...)
     * @param vo
     */
    void updateStrategyStatisDataByStrategyVO(StrategyStatisVO vo);
}
